#ifndef _RTC_H__
#define _RTC_H__
#include "gd32f4xx.h"
#include "systick.h"
#define WRITE_BCD(VAL)    (((VAL/10) << 4) + (VAL%10))
#define READ_BCD(VAL)     ((VAL >> 4)*10 + (VAL&0x0F))


// 默认配置
#define  date_formate  RTC_24HOUR //RTC_12HOUR  RTC_24HOUR
#define  RTC_ALARM   0 // 是否启用闹钟功能
//初始化的默认时间
#define dft_year     22
#define dft_month    1
#define dft_date     2
#define dft_week     2 
#define dft_hour     9
#define dft_minute   59
#define dft_second   57


// 闹钟功能
#if RTC_ALARM 
//设置屏蔽位 当某个时间单位对应的屏蔽位被设置时，在比较过程中会忽略该时间单位的值，
//只要其他未被屏蔽的时间单位匹配，就认为闹钟触发条件满足。  
//RTC_ALARM_NONE_MASK, RTC_ALARM_DATE_MASK, RTC_ALARM_HOUR_MASK RTC_ALARM_MINUTE_MASK, RTC_ALARM_SECOND_MASK, RTC_ALARM_ALL_MASK
#define RTC_ALARM_MASK   RTC_ALARM_NONE_MASK
#define RTC_ALARM_DAY    2
#define RTC_ALARM_HOUR   10
#define RTC_ALARM_MINUTE 0
#define RTC_ALARM_SECOND 2


#define rtc_alarmx       RTC_ALARM0
#define rtc_int_alarmx   RTC_INT_ALARM0
#define rtc_flag_alarmx  RTC_FLAG_ALRM0

#endif 


void RTC_config();

uint16_t* RTC_read();
#if RTC_ALARM 
void RTC_ALARM_config();
extern void rtc_alarm_hander();
#endif 

#endif 